package com.bage.common.service;

public interface TokenService<T> {

    /**
     * 设置token
     * @param userInfo
     * @return
     */
    T setToken(T userInfo);

    /**
     * 设置用户信息
     * @param userInfo
     */
    void setThreadLocalUser(T userInfo);

    /**
     * 删除本地用户
     */
    void removeThreadLocalUser();

    /**
     * 校验token;根据规则判断是否要刷新token
     * @param token
     * @return
     */
    T checkToken(String token);

    /**
     * 获取用户信息
     * @return
     */
    T getThreadLocalUser();

    /**
     * 获取用户Id
     * @return
     */
    Long getThreadLocalUserId();

    /**
     * 获取租户id
     * @return
     */
    Long getThreadLocalTenantId();

    /**
     * 清除token
     */
    void clearToken();
}
